package com.ouyangfeng.algorithm.day20210514;

import java.util.Arrays;

/**
 * 买卖股票的最佳时机
 *
 * 给定一个数组 prices ，其中prices[i] 是一支给定股票第 i 天的价格。
 * 设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易（多次买卖一支股票）。
 * 注意：你不能同时参与多笔交易（你必须在再次购买前出售掉之前的股票）。
 *
 * 链接：https://leetcode-cn.com/leetbook/read/top-interview-questions-easy/x2gy9m/
 * 来源：力扣（LeetCode）
 *
 * @author ouyangfeng
 * @date 2021/5/14  16:32
 *
 * 贪心算法
 * 数组
 */
public class Algorithm_2 {

    public static int[] prices = {7,1,5,3,6,4};
//    public static int[] prices = {7,6,4,3,1};
//    public static int[] prices = {1,2,3,4,5};

    public int maxProfit(int[] prices) {

        if (prices == null || prices.length < 2)
            return 0;
        int total = 0, index = 0, length = prices.length;
        while (index < length) {
            //如果股票下跌就一直找，直到找到股票开始上涨为止
            while (index < length - 1 && prices[index] >= prices[index + 1])
                index++;
            //股票上涨开始的值，也就是这段时间上涨的最小值
            int min = prices[index];
            //一直找到股票上涨的最大值为止
            while (index < length - 1 && prices[index] <= prices[index + 1])
                index++;
            //计算这段上涨时间的差值，然后累加
            total += prices[index++] - min;
        }
        return total;

    }

    public static void main(String[] args) {
        int price = new Algorithm_2().maxProfit(prices);
        System.out.println(price);
    }

}






